home *** CD-ROM | disk | FTP | other *** search
- /* matptr.f -- translated by f2c (version of 3 February 1990 3:36:42).
- You must link the resulting object file with the libraries:
- -lF77 -lI77 -lm -lc (in that order)
- */
-
- #include "f2c.h"
-
- /* Common Block Declarations */
-
- struct {
- integer ielmnt, isbckt, nsbckt, iunsat, nunsat, itemps, numtem, isens,
- nsens, ifour, nfour, ifield, icode, idelim, icolum, insize,
- junode, lsbkpt, numbkp, iorder, jmnode, iur, iuc, ilc, ilr,
- numoff, isr, nmoffc, iseq, iseq1, neqn, nodevs, ndiag, iswap,
- iequa, macins, lvnim1, lx0, lvn, lynl, lyu, lyl, lx1, lx2, lx3,
- lx4, lx5, lx6, lx7, ld0, ld1, ltd, imynl, imvn, lcvn, nsnod,
- nsmat, nsval, icnod, icmat, icval, loutpt, lpol, lzer, irswpf,
- irswpr, icswpf, icswpr, irpt, jcpt, irowno, jcolno, nttbr, nttar,
- lvntmp;
- } tabinf_;
-
- #define tabinf_1 tabinf_
-
- struct {
- integer locate[50], jelcnt[50], nunods, ncnods, numnod, nstop, nut, nlt,
- nxtrm, ndist, ntlin, ibr, numvs, numalt, numcyc;
- } cirdat_;
-
- #define cirdat_1 cirdat_
-
- struct {
- doublereal value[200000];
- } blank_;
-
- #define blank_1 blank_
-
- /*< subroutine matptr >*/
- /* Subroutine */ int matptr_()
- {
- /* System generated locals */
- integer i_1;
-
- /* Local variables */
- static doublereal cdis;
- static integer node, ndim, locm, locn, node1, node2, node3, ndim2, node4,
- node5, node6, node7;
- extern /* Subroutine */ int getm4_(), zero4_();
- static integer i, ntemp, locvs;
- #define nodplc ((integer *)&blank_1)
- #define cvalue ((complex *)&blank_1)
- extern /* Subroutine */ int crunch_(), slpmem_(), reserv_();
- static integer nl1, nl2, locvst, ni1, ni2, loc, kbr, ibr1, ibr2;
-
- /*< implicit double precision (a-h,o-z) >*/
-
- /* this routine (by calls to the routine reserve) establishes the */
- /* nonzero-element structure of the circuit equation coefficient matrix.
- */
-
- /* spice version 2g.6 sccsid=tabinf 3/15/83 */
- /*< common /tabinf/ ielmnt,isbckt,nsbckt,iunsat,nunsat,itemps,numtem, >*/
- /*< 1 isens,nsens,ifour,nfour,ifield,icode,idelim,icolum,insize, >*/
- /*< 2 junode,lsbkpt,numbkp,iorder,jmnode,iur,iuc,ilc,ilr,numoff,isr, >*/
- /*< 3 nmoffc,iseq,iseq1,neqn,nodevs,ndiag,iswap,iequa,macins,lvnim1, >*/
- /*< 4 lx0,lvn,lynl,lyu,lyl,lx1,lx2,lx3,lx4,lx5,lx6,lx7,ld0,ld1,ltd, >*/
- /*< 5 imynl,imvn,lcvn,nsnod,nsmat,nsval,icnod,icmat,icval, >*/
- /*< 6 loutpt,lpol,lzer,irswpf,irswpr,icswpf,icswpr,irpt,jcpt, >*/
- /*< 7 irowno,jcolno,nttbr,nttar,lvntmp >*/
- /* spice version 2g.6 sccsid=cirdat 3/15/83 */
- /*< common /cirdat/ locate(50),jelcnt(50),nunods,ncnods,numnod,nstop, >*/
- /*< 1 nut,nlt,nxtrm,ndist,ntlin,ibr,numvs,numalt,numcyc >*/
- /* spice version 2g.6 sccsid=blank 3/15/83 */
- /*< common /blank/ value(200000) >*/
- /*< integer nodplc(64) >*/
- /*< complex cvalue(32) >*/
- /*< equivalence (value(1),nodplc(1),cvalue(1)) >*/
-
- /* allocate and initialize storage */
-
- /*< call getm4(isr,nstop+1) >*/
- i_1 = cirdat_1.nstop + 1;
- getm4_(&tabinf_1.isr, &i_1);
- /*< numvs=jelcnt(3)+jelcnt(6)+jelcnt(8)+jelcnt(9)+2*jelcnt(17) >*/
- cirdat_1.numvs = cirdat_1.jelcnt[2] + cirdat_1.jelcnt[5] +
- cirdat_1.jelcnt[7] + cirdat_1.jelcnt[8] + (cirdat_1.jelcnt[16] <<
- 1);
- /*< call getm4(iseq,numvs) >*/
- getm4_(&tabinf_1.iseq, &cirdat_1.numvs);
- /*< call getm4(iseq1,numvs) >*/
- getm4_(&tabinf_1.iseq1, &cirdat_1.numvs);
- /*< call getm4(neqn,numvs) >*/
- getm4_(&tabinf_1.neqn, &cirdat_1.numvs);
- /*< call getm4(nodevs,numnod) >*/
- getm4_(&tabinf_1.nodevs, &cirdat_1.numnod);
- /*< call getm4(ndiag,nstop) >*/
- getm4_(&tabinf_1.ndiag, &cirdat_1.nstop);
- /*< call getm4(nmoffc,nstop) >*/
- getm4_(&tabinf_1.nmoffc, &cirdat_1.nstop);
- /*< call getm4(numoff,nstop) >*/
- getm4_(&tabinf_1.numoff, &cirdat_1.nstop);
- /*< call getm4(irpt,nstop) >*/
- getm4_(&tabinf_1.irpt, &cirdat_1.nstop);
- /*< call getm4(jcpt,nstop) >*/
- getm4_(&tabinf_1.jcpt, &cirdat_1.nstop);
- /*< call getm4(irowno,nstop) >*/
- getm4_(&tabinf_1.irowno, &cirdat_1.nstop);
- /*< call getm4(jcolno,nstop) >*/
- getm4_(&tabinf_1.jcolno, &cirdat_1.nstop);
- /*< call slpmem(irpt,nstop) >*/
- slpmem_(&tabinf_1.irpt, &cirdat_1.nstop);
- /*< call slpmem(jcpt,nstop) >*/
- slpmem_(&tabinf_1.jcpt, &cirdat_1.nstop);
- /*< call slpmem(irowno,nstop) >*/
- slpmem_(&tabinf_1.irowno, &cirdat_1.nstop);
- /*< call slpmem(jcolno,nstop) >*/
- slpmem_(&tabinf_1.jcolno, &cirdat_1.nstop);
- /*< call crunch >*/
- crunch_();
-
- /*< call zero4(nodplc(irpt+1),nstop) >*/
- zero4_(&nodplc[tabinf_1.irpt], &cirdat_1.nstop);
- /*< call zero4(nodplc(jcpt+1),nstop) >*/
- zero4_(&nodplc[tabinf_1.jcpt], &cirdat_1.nstop);
- /*< call zero4(nodplc(irowno+1),nstop) >*/
- zero4_(&nodplc[tabinf_1.irowno], &cirdat_1.nstop);
- /*< call zero4(nodplc(jcolno+1),nstop) >*/
- zero4_(&nodplc[tabinf_1.jcolno], &cirdat_1.nstop);
- /*< call zero4(nodplc(iseq1+1),numvs) >*/
- zero4_(&nodplc[tabinf_1.iseq1], &cirdat_1.numvs);
- /*< call zero4(nodplc(nodevs+1),numnod) >*/
- zero4_(&nodplc[tabinf_1.nodevs], &cirdat_1.numnod);
- /*< call zero4(nodplc(ndiag+1),nstop) >*/
- zero4_(&nodplc[tabinf_1.ndiag], &cirdat_1.nstop);
- /*< call zero4(nodplc(nmoffc+1),nstop) >*/
- zero4_(&nodplc[tabinf_1.nmoffc], &cirdat_1.nstop);
- /*< call zero4(nodplc(numoff+1),nstop) >*/
- zero4_(&nodplc[tabinf_1.numoff], &cirdat_1.nstop);
-
- /*< numvs=0 >*/
- cirdat_1.numvs = 0;
- /*< nxtrm=0 >*/
- cirdat_1.nxtrm = 0;
- /*< ndist=0 >*/
- cirdat_1.ndist = 0;
- /*< ntlin=1 >*/
- cirdat_1.ntlin = 1;
- /*< ibr=numnod >*/
- cirdat_1.ibr = cirdat_1.numnod;
-
- /* resistors */
-
- /*< loc=locate(1) >*/
- loc = cirdat_1.locate[0];
- /*< 110 if ((loc.eq.0).or.(nodplc(loc+8).ne.0)) go to 120 >*/
- L110:
- if (loc == 0 || nodplc[loc + 7] != 0) {
- goto L120;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< call reserv(node1,node1) >*/
- reserv_(&node1, &node1);
- /*< call reserv(node1,node2) >*/
- reserv_(&node1, &node2);
- /*< call reserv(node2,node1) >*/
- reserv_(&node2, &node1);
- /*< call reserv(node2,node2) >*/
- reserv_(&node2, &node2);
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 110 >*/
- goto L110;
-
- /* capacitors */
-
- /*< 120 loc=locate(2) >*/
- L120:
- loc = cirdat_1.locate[1];
- /*< 130 if ((loc.eq.0).or.(nodplc(loc+12).ne.0)) go to 400 >*/
- L130:
- if (loc == 0 || nodplc[loc + 11] != 0) {
- goto L400;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< call reserv(node1,node2) >*/
- reserv_(&node1, &node2);
- /*< call reserv(node2,node1) >*/
- reserv_(&node2, &node1);
- /*< ntemp=nodplc(ndiag+node1) >*/
- ntemp = nodplc[tabinf_1.ndiag + node1 - 1];
- /*< call reserv(node1,node1) >*/
- reserv_(&node1, &node1);
- /*< nodplc(ndiag+node1)=ntemp >*/
- nodplc[tabinf_1.ndiag + node1 - 1] = ntemp;
- /*< ntemp=nodplc(ndiag+node2) >*/
- ntemp = nodplc[tabinf_1.ndiag + node2 - 1];
- /*< call reserv(node2,node2) >*/
- reserv_(&node2, &node2);
- /*< nodplc(ndiag+node2)=ntemp >*/
- nodplc[tabinf_1.ndiag + node2 - 1] = ntemp;
- /*< nodplc(loc+8)=nxtrm+1 >*/
- nodplc[loc + 7] = cirdat_1.nxtrm + 1;
- /*< nxtrm=nxtrm+2 >*/
- cirdat_1.nxtrm += 2;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 130 >*/
- goto L130;
-
- /* inductors */
-
- /*< 400 loc=locate(3) >*/
- L400:
- loc = cirdat_1.locate[2];
- /*< 430 if ((loc.eq.0).or.(nodplc(loc+14).ne.0)) go to 440 >*/
- L430:
- if (loc == 0 || nodplc[loc + 13] != 0) {
- goto L440;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< ibr=ibr+1 >*/
- ++cirdat_1.ibr;
- /*< nodplc(loc+5)=ibr >*/
- nodplc[loc + 4] = cirdat_1.ibr;
- /*< call reserv(node1,ibr) >*/
- reserv_(&node1, &cirdat_1.ibr);
- /*< call reserv(node2,ibr) >*/
- reserv_(&node2, &cirdat_1.ibr);
- /*< call reserv(ibr,node1) >*/
- reserv_(&cirdat_1.ibr, &node1);
- /*< call reserv(ibr,node2) >*/
- reserv_(&cirdat_1.ibr, &node2);
- /*< ntemp=nodplc(ndiag+ibr) >*/
- ntemp = nodplc[tabinf_1.ndiag + cirdat_1.ibr - 1];
- /*< call reserv(ibr,ibr) >*/
- reserv_(&cirdat_1.ibr, &cirdat_1.ibr);
- /*< nodplc(ndiag+ibr)=ntemp >*/
- nodplc[tabinf_1.ndiag + cirdat_1.ibr - 1] = ntemp;
- /*< numvs=numvs+1 >*/
- ++cirdat_1.numvs;
- /*< nodplc(iseq+numvs)=loc >*/
- nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
- /*< nodplc(neqn+numvs)=ibr >*/
- nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = cirdat_1.ibr;
- /*< nodplc(nodevs+node1)=nodplc(nodevs+node1)+1 >*/
- ++nodplc[tabinf_1.nodevs + node1 - 1];
- /*< nodplc(nodevs+node2)=nodplc(nodevs+node2)+1 >*/
- ++nodplc[tabinf_1.nodevs + node2 - 1];
- /*< nodplc(loc+11)=nxtrm+1 >*/
- nodplc[loc + 10] = cirdat_1.nxtrm + 1;
- /*< nxtrm=nxtrm+2 >*/
- cirdat_1.nxtrm += 2;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 430 >*/
- goto L430;
-
- /* mutual inductors */
-
- /*< 440 loc=locate(4) >*/
- L440:
- loc = cirdat_1.locate[3];
- /*< 450 if ((loc.eq.0).or.(nodplc(loc+6).ne.0)) go to 460 >*/
- L450:
- if (loc == 0 || nodplc[loc + 5] != 0) {
- goto L460;
- }
- /*< nl1=nodplc(loc+2) >*/
- nl1 = nodplc[loc + 1];
- /*< nl2=nodplc(loc+3) >*/
- nl2 = nodplc[loc + 2];
- /*< nl1=nodplc(nl1+5) >*/
- nl1 = nodplc[nl1 + 4];
- /*< nl2=nodplc(nl2+5) >*/
- nl2 = nodplc[nl2 + 4];
- /*< call reserv(nl1,nl2) >*/
- reserv_(&nl1, &nl2);
- /*< call reserv(nl2,nl1) >*/
- reserv_(&nl2, &nl1);
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 450 >*/
- goto L450;
-
- /* nonlinear voltage-controlled current sources */
-
- /*< 460 loc=locate(5) >*/
- L460:
- loc = cirdat_1.locate[4];
- /*< 462 if ((loc.eq.0).or.(nodplc(loc+13).ne.0)) go to 464 >*/
- L462:
- if (loc == 0 || nodplc[loc + 12] != 0) {
- goto L464;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< ndim=nodplc(loc+4) >*/
- ndim = nodplc[loc + 3];
- /*< ndim2=ndim+ndim >*/
- ndim2 = ndim + ndim;
- /*< locn=nodplc(loc+6) >*/
- locn = nodplc[loc + 5];
- /*< do 463 i=1,ndim2 >*/
- i_1 = ndim2;
- for (i = 1; i <= i_1; ++i) {
- /*< node=nodplc(locn+i) >*/
- node = nodplc[locn + i - 1];
- /*< call reserv(node1,node) >*/
- reserv_(&node1, &node);
- /*< call reserv(node2,node) >*/
- reserv_(&node2, &node);
- /*< 463 continue >*/
- /* L463: */
- }
- /*< nodplc(loc+12)=nxtrm+1 >*/
- nodplc[loc + 11] = cirdat_1.nxtrm + 1;
- /*< nxtrm=nxtrm+1+ndim2 >*/
- cirdat_1.nxtrm = cirdat_1.nxtrm + 1 + ndim2;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 462 >*/
- goto L462;
-
- /* nonlinear voltage controlled voltage sources */
-
- /*< 464 loc=locate(6) >*/
- L464:
- loc = cirdat_1.locate[5];
- /*< 466 if ((loc.eq.0).or.(nodplc(loc+14).ne.0)) go to 468 >*/
- L466:
- if (loc == 0 || nodplc[loc + 13] != 0) {
- goto L468;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< ibr=ibr+1 >*/
- ++cirdat_1.ibr;
- /*< nodplc(loc+6)=ibr >*/
- nodplc[loc + 5] = cirdat_1.ibr;
- /*< call reserv(node1,ibr) >*/
- reserv_(&node1, &cirdat_1.ibr);
- /*< call reserv(node2,ibr) >*/
- reserv_(&node2, &cirdat_1.ibr);
- /*< call reserv(ibr,node1) >*/
- reserv_(&cirdat_1.ibr, &node1);
- /*< call reserv(ibr,node2) >*/
- reserv_(&cirdat_1.ibr, &node2);
- /*< numvs=numvs+1 >*/
- ++cirdat_1.numvs;
- /*< nodplc(iseq+numvs)=loc >*/
- nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
- /*< nodplc(neqn+numvs)=ibr >*/
- nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = cirdat_1.ibr;
- /*< nodplc(nodevs+node1)=nodplc(nodevs+node1)+1 >*/
- ++nodplc[tabinf_1.nodevs + node1 - 1];
- /*< nodplc(nodevs+node2)=nodplc(nodevs+node2)+1 >*/
- ++nodplc[tabinf_1.nodevs + node2 - 1];
- /*< ndim=nodplc(loc+4) >*/
- ndim = nodplc[loc + 3];
- /*< ndim2=ndim+ndim >*/
- ndim2 = ndim + ndim;
- /*< locn=nodplc(loc+7) >*/
- locn = nodplc[loc + 6];
- /*< do 467 i=1,ndim2 >*/
- i_1 = ndim2;
- for (i = 1; i <= i_1; ++i) {
- /*< node=nodplc(locn+i) >*/
- node = nodplc[locn + i - 1];
- /*< call reserv(ibr,node) >*/
- reserv_(&cirdat_1.ibr, &node);
- /*< 467 continue >*/
- /* L467: */
- }
- /*< nodplc(loc+13)=nxtrm+1 >*/
- nodplc[loc + 12] = cirdat_1.nxtrm + 1;
- /*< nxtrm=nxtrm+2+ndim2 >*/
- cirdat_1.nxtrm = cirdat_1.nxtrm + 2 + ndim2;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 466 >*/
- goto L466;
-
- /* voltage sources */
-
- /*< 468 loc=locate(9) >*/
- L468:
- loc = cirdat_1.locate[8];
- /*< 470 if ((loc.eq.0).or.(nodplc(loc+11).ne.0)) go to 472 >*/
- L470:
- if (loc == 0 || nodplc[loc + 10] != 0) {
- goto L472;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< ibr=ibr+1 >*/
- ++cirdat_1.ibr;
- /*< nodplc(loc+6)=ibr >*/
- nodplc[loc + 5] = cirdat_1.ibr;
- /*< call reserv(node1,ibr) >*/
- reserv_(&node1, &cirdat_1.ibr);
- /*< call reserv(node2,ibr) >*/
- reserv_(&node2, &cirdat_1.ibr);
- /*< call reserv(ibr,node1) >*/
- reserv_(&cirdat_1.ibr, &node1);
- /*< call reserv(ibr,node2) >*/
- reserv_(&cirdat_1.ibr, &node2);
- /*< numvs=numvs+1 >*/
- ++cirdat_1.numvs;
- /*< nodplc(iseq+numvs)=loc >*/
- nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
- /*< nodplc(neqn+numvs)=ibr >*/
- nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = cirdat_1.ibr;
- /*< nodplc(nodevs+node1)=nodplc(nodevs+node1)+1 >*/
- ++nodplc[tabinf_1.nodevs + node1 - 1];
- /*< nodplc(nodevs+node2)=nodplc(nodevs+node2)+1 >*/
- ++nodplc[tabinf_1.nodevs + node2 - 1];
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 470 >*/
- goto L470;
-
- /* nonlinear current controlled current sources */
-
- /*< 472 loc=locate(7) >*/
- L472:
- loc = cirdat_1.locate[6];
- /*< 474 if ((loc.eq.0).or.(nodplc(loc+13).ne.0)) go to 476 >*/
- L474:
- if (loc == 0 || nodplc[loc + 12] != 0) {
- goto L476;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< ndim=nodplc(loc+4) >*/
- ndim = nodplc[loc + 3];
- /*< locvs=nodplc(loc+6) >*/
- locvs = nodplc[loc + 5];
- /*< do 475 i=1,ndim >*/
- i_1 = ndim;
- for (i = 1; i <= i_1; ++i) {
- /*< locvst=nodplc(locvs+i) >*/
- locvst = nodplc[locvs + i - 1];
- /*< kbr=nodplc(locvst+6) >*/
- kbr = nodplc[locvst + 5];
- /*< call reserv(node1,kbr) >*/
- reserv_(&node1, &kbr);
- /*< call reserv(node2,kbr) >*/
- reserv_(&node2, &kbr);
- /*< 475 continue >*/
- /* L475: */
- }
- /*< nodplc(loc+12)=nxtrm+1 >*/
- nodplc[loc + 11] = cirdat_1.nxtrm + 1;
- /*< nxtrm=nxtrm+1+ndim+ndim >*/
- cirdat_1.nxtrm = cirdat_1.nxtrm + 1 + ndim + ndim;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 474 >*/
- goto L474;
-
- /* nonlinear current controlled voltage sources */
-
- /*< 476 loc=locate(8) >*/
- L476:
- loc = cirdat_1.locate[7];
- /*< 478 if ((loc.eq.0).or.(nodplc(loc+14).ne.0)) go to 500 >*/
- L478:
- if (loc == 0 || nodplc[loc + 13] != 0) {
- goto L500;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< ibr=ibr+1 >*/
- ++cirdat_1.ibr;
- /*< nodplc(loc+6)=ibr >*/
- nodplc[loc + 5] = cirdat_1.ibr;
- /*< call reserv(node1,ibr) >*/
- reserv_(&node1, &cirdat_1.ibr);
- /*< call reserv(node2,ibr) >*/
- reserv_(&node2, &cirdat_1.ibr);
- /*< call reserv(ibr,node1) >*/
- reserv_(&cirdat_1.ibr, &node1);
- /*< call reserv(ibr,node2) >*/
- reserv_(&cirdat_1.ibr, &node2);
- /*< numvs=numvs+1 >*/
- ++cirdat_1.numvs;
- /*< nodplc(iseq+numvs)=loc >*/
- nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
- /*< nodplc(neqn+numvs)=ibr >*/
- nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = cirdat_1.ibr;
- /*< nodplc(nodevs+node1)=nodplc(nodevs+node1)+1 >*/
- ++nodplc[tabinf_1.nodevs + node1 - 1];
- /*< nodplc(nodevs+node2)=nodplc(nodevs+node2)+1 >*/
- ++nodplc[tabinf_1.nodevs + node2 - 1];
- /*< ndim=nodplc(loc+4) >*/
- ndim = nodplc[loc + 3];
- /*< locvs=nodplc(loc+7) >*/
- locvs = nodplc[loc + 6];
- /*< do 479 i=1,ndim >*/
- i_1 = ndim;
- for (i = 1; i <= i_1; ++i) {
- /*< locvst=nodplc(locvs+i) >*/
- locvst = nodplc[locvs + i - 1];
- /*< kbr=nodplc(locvst+6) >*/
- kbr = nodplc[locvst + 5];
- /*< call reserv(ibr,kbr) >*/
- reserv_(&cirdat_1.ibr, &kbr);
- /*< 479 continue >*/
- /* L479: */
- }
- /*< nodplc(loc+13)=nxtrm+1 >*/
- nodplc[loc + 12] = cirdat_1.nxtrm + 1;
- /*< nxtrm=nxtrm+2+ndim+ndim >*/
- cirdat_1.nxtrm = cirdat_1.nxtrm + 2 + ndim + ndim;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 478 >*/
- goto L478;
-
- /* diodes */
-
- /*< 500 loc=locate(11) >*/
- L500:
- loc = cirdat_1.locate[10];
- /*< 510 if ((loc.eq.0).or.(nodplc(loc+16).ne.0)) go to 520 >*/
- L510:
- if (loc == 0 || nodplc[loc + 15] != 0) {
- goto L520;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< node3=nodplc(loc+4) >*/
- node3 = nodplc[loc + 3];
- /*< call reserv(node1,node1) >*/
- reserv_(&node1, &node1);
- /*< call reserv(node2,node2) >*/
- reserv_(&node2, &node2);
- /*< call reserv(node3,node3) >*/
- reserv_(&node3, &node3);
- /*< call reserv(node1,node3) >*/
- reserv_(&node1, &node3);
- /*< call reserv(node2,node3) >*/
- reserv_(&node2, &node3);
- /*< call reserv(node3,node1) >*/
- reserv_(&node3, &node1);
- /*< call reserv(node3,node2) >*/
- reserv_(&node3, &node2);
- /*< nodplc(loc+11)=nxtrm+1 >*/
- nodplc[loc + 10] = cirdat_1.nxtrm + 1;
- /*< nxtrm=nxtrm+5 >*/
- cirdat_1.nxtrm += 5;
- /*< nodplc(loc+12)=ndist+1 >*/
- nodplc[loc + 11] = cirdat_1.ndist + 1;
- /*< ndist=ndist+7 >*/
- cirdat_1.ndist += 7;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 510 >*/
- goto L510;
-
- /* transistors */
-
- /*< 520 loc=locate(12) >*/
- L520:
- loc = cirdat_1.locate[11];
- /*< 530 if ((loc.eq.0).or.(nodplc(loc+36).ne.0)) go to 540 >*/
- L530:
- if (loc == 0 || nodplc[loc + 35] != 0) {
- goto L540;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< node3=nodplc(loc+4) >*/
- node3 = nodplc[loc + 3];
- /*< node4=nodplc(loc+5) >*/
- node4 = nodplc[loc + 4];
- /*< node5=nodplc(loc+6) >*/
- node5 = nodplc[loc + 5];
- /*< node6=nodplc(loc+7) >*/
- node6 = nodplc[loc + 6];
- /*< node7=nodplc(loc+30) >*/
- node7 = nodplc[loc + 29];
- /*< locm=nodplc(loc+8) >*/
- locm = nodplc[loc + 7];
- /*< locm=nodplc(locm+1) >*/
- locm = nodplc[locm];
- /*< cdis=value(locm+32) >*/
- cdis = blank_1.value[locm + 31];
- /*< call reserv(node1,node1) >*/
- reserv_(&node1, &node1);
- /*< call reserv(node2,node2) >*/
- reserv_(&node2, &node2);
- /*< call reserv(node3,node3) >*/
- reserv_(&node3, &node3);
- /*< call reserv(node4,node4) >*/
- reserv_(&node4, &node4);
- /*< call reserv(node5,node5) >*/
- reserv_(&node5, &node5);
- /*< call reserv(node6,node6) >*/
- reserv_(&node6, &node6);
- /*< call reserv(node1,node4) >*/
- reserv_(&node1, &node4);
- /*< call reserv(node2,node5) >*/
- reserv_(&node2, &node5);
- /*< call reserv(node3,node6) >*/
- reserv_(&node3, &node6);
- /*< call reserv(node4,node5) >*/
- reserv_(&node4, &node5);
- /*< call reserv(node4,node6) >*/
- reserv_(&node4, &node6);
- /*< call reserv(node5,node6) >*/
- reserv_(&node5, &node6);
- /*< call reserv(node4,node1) >*/
- reserv_(&node4, &node1);
- /*< call reserv(node5,node2) >*/
- reserv_(&node5, &node2);
- /*< call reserv(node6,node3) >*/
- reserv_(&node6, &node3);
- /*< call reserv(node5,node4) >*/
- reserv_(&node5, &node4);
- /*< call reserv(node6,node4) >*/
- reserv_(&node6, &node4);
- /*< call reserv(node6,node5) >*/
- reserv_(&node6, &node5);
- /*< call reserv(node7,node7) >*/
- reserv_(&node7, &node7);
- /*< call reserv(node4,node7) >*/
- reserv_(&node4, &node7);
- /*< call reserv(node7,node4) >*/
- reserv_(&node7, &node4);
- /*< if (cdis.lt.1.0d0) call reserv(node2,node4) >*/
- if (cdis < 1.) {
- reserv_(&node2, &node4);
- }
- /*< if (cdis.lt.1.0d0) call reserv(node4,node2) >*/
- if (cdis < 1.) {
- reserv_(&node4, &node2);
- }
- /*< nodplc(loc+22)=nxtrm+1 >*/
- nodplc[loc + 21] = cirdat_1.nxtrm + 1;
- /*< nxtrm=nxtrm+19 >*/
- cirdat_1.nxtrm += 19;
- /*< nodplc(loc+23)=ndist+1 >*/
- nodplc[loc + 22] = cirdat_1.ndist + 1;
- /*< ndist=ndist+21 >*/
- cirdat_1.ndist += 21;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 530 >*/
- goto L530;
-
- /* jfets */
-
- /*< 540 loc=locate(13) >*/
- L540:
- loc = cirdat_1.locate[12];
- /*< 550 if ((loc.eq.0).or.(nodplc(loc+25).ne.0)) go to 560 >*/
- L550:
- if (loc == 0 || nodplc[loc + 24] != 0) {
- goto L560;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< node3=nodplc(loc+4) >*/
- node3 = nodplc[loc + 3];
- /*< node4=nodplc(loc+5) >*/
- node4 = nodplc[loc + 4];
- /*< node5=nodplc(loc+6) >*/
- node5 = nodplc[loc + 5];
- /*< call reserv(node1,node1) >*/
- reserv_(&node1, &node1);
- /*< call reserv(node2,node2) >*/
- reserv_(&node2, &node2);
- /*< call reserv(node3,node3) >*/
- reserv_(&node3, &node3);
- /*< call reserv(node4,node4) >*/
- reserv_(&node4, &node4);
- /*< call reserv(node5,node5) >*/
- reserv_(&node5, &node5);
- /*< call reserv(node1,node4) >*/
- reserv_(&node1, &node4);
- /*< call reserv(node2,node4) >*/
- reserv_(&node2, &node4);
- /*< call reserv(node2,node5) >*/
- reserv_(&node2, &node5);
- /*< call reserv(node3,node5) >*/
- reserv_(&node3, &node5);
- /*< call reserv(node4,node5) >*/
- reserv_(&node4, &node5);
- /*< call reserv(node4,node1) >*/
- reserv_(&node4, &node1);
- /*< call reserv(node4,node2) >*/
- reserv_(&node4, &node2);
- /*< call reserv(node5,node2) >*/
- reserv_(&node5, &node2);
- /*< call reserv(node5,node3) >*/
- reserv_(&node5, &node3);
- /*< call reserv(node5,node4) >*/
- reserv_(&node5, &node4);
- /*< nodplc(loc+19)=nxtrm+1 >*/
- nodplc[loc + 18] = cirdat_1.nxtrm + 1;
- /*< nxtrm=nxtrm+13 >*/
- cirdat_1.nxtrm += 13;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 550 >*/
- goto L550;
-
- /* mosfets */
-
- /*< 560 loc=locate(14) >*/
- L560:
- loc = cirdat_1.locate[13];
- /*< 570 if ((loc.eq.0).or.(nodplc(loc+33).ne.0)) go to 600 >*/
- L570:
- if (loc == 0 || nodplc[loc + 32] != 0) {
- goto L600;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< node3=nodplc(loc+4) >*/
- node3 = nodplc[loc + 3];
- /*< node4=nodplc(loc+5) >*/
- node4 = nodplc[loc + 4];
- /*< node5=nodplc(loc+6) >*/
- node5 = nodplc[loc + 5];
- /*< node6=nodplc(loc+7) >*/
- node6 = nodplc[loc + 6];
- /*< call reserv(node1,node1) >*/
- reserv_(&node1, &node1);
- /*< call reserv(node2,node2) >*/
- reserv_(&node2, &node2);
- /*< call reserv(node3,node3) >*/
- reserv_(&node3, &node3);
- /*< call reserv(node4,node4) >*/
- reserv_(&node4, &node4);
- /*< call reserv(node5,node5) >*/
- reserv_(&node5, &node5);
- /*< call reserv(node6,node6) >*/
- reserv_(&node6, &node6);
- /*< call reserv(node1,node5) >*/
- reserv_(&node1, &node5);
- /*< call reserv(node2,node4) >*/
- reserv_(&node2, &node4);
- /*< call reserv(node2,node5) >*/
- reserv_(&node2, &node5);
- /*< call reserv(node2,node6) >*/
- reserv_(&node2, &node6);
- /*< call reserv(node3,node6) >*/
- reserv_(&node3, &node6);
- /*< call reserv(node4,node5) >*/
- reserv_(&node4, &node5);
- /*< call reserv(node4,node6) >*/
- reserv_(&node4, &node6);
- /*< call reserv(node5,node6) >*/
- reserv_(&node5, &node6);
- /*< call reserv(node5,node1) >*/
- reserv_(&node5, &node1);
- /*< call reserv(node4,node2) >*/
- reserv_(&node4, &node2);
- /*< call reserv(node5,node2) >*/
- reserv_(&node5, &node2);
- /*< call reserv(node6,node2) >*/
- reserv_(&node6, &node2);
- /*< call reserv(node6,node3) >*/
- reserv_(&node6, &node3);
- /*< call reserv(node5,node4) >*/
- reserv_(&node5, &node4);
- /*< call reserv(node6,node4) >*/
- reserv_(&node6, &node4);
- /*< call reserv(node6,node5) >*/
- reserv_(&node6, &node5);
- /*< nodplc(loc+26)=nxtrm+1 >*/
- nodplc[loc + 25] = cirdat_1.nxtrm + 1;
- /*< nxtrm=nxtrm+28 >*/
- cirdat_1.nxtrm += 28;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 570 >*/
- goto L570;
-
- /* transmission lines */
-
- /*< 600 loc=locate(17) >*/
- L600:
- loc = cirdat_1.locate[16];
- /*< 610 if ((loc.eq.0).or.(nodplc(loc+33).ne.0)) go to 1000 >*/
- L610:
- if (loc == 0 || nodplc[loc + 32] != 0) {
- goto L1000;
- }
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< node3=nodplc(loc+4) >*/
- node3 = nodplc[loc + 3];
- /*< node4=nodplc(loc+5) >*/
- node4 = nodplc[loc + 4];
- /*< ni1=nodplc(loc+6) >*/
- ni1 = nodplc[loc + 5];
- /*< ni2=nodplc(loc+7) >*/
- ni2 = nodplc[loc + 6];
- /*< ibr1=ibr+1 >*/
- ibr1 = cirdat_1.ibr + 1;
- /*< ibr2=ibr+2 >*/
- ibr2 = cirdat_1.ibr + 2;
- /*< ibr=ibr+2 >*/
- cirdat_1.ibr += 2;
- /*< nodplc(loc+8)=ibr1 >*/
- nodplc[loc + 7] = ibr1;
- /*< nodplc(loc+9)=ibr2 >*/
- nodplc[loc + 8] = ibr2;
- /*< call reserv(node1,node1) >*/
- reserv_(&node1, &node1);
- /*< call reserv(node1,ni1) >*/
- reserv_(&node1, &ni1);
- /*< call reserv(node2,ibr1) >*/
- reserv_(&node2, &ibr1);
- /*< call reserv(node3,node3) >*/
- reserv_(&node3, &node3);
- /*< call reserv(node4,ibr2) >*/
- reserv_(&node4, &ibr2);
- /*< call reserv(ni1,node1) >*/
- reserv_(&ni1, &node1);
- /*< call reserv(ni1,ni1) >*/
- reserv_(&ni1, &ni1);
- /*< call reserv(ni1,ibr1) >*/
- reserv_(&ni1, &ibr1);
- /*< call reserv(ni2,ni2) >*/
- reserv_(&ni2, &ni2);
- /*< call reserv(ni2,ibr2) >*/
- reserv_(&ni2, &ibr2);
- /*< call reserv(ibr1,node2) >*/
- reserv_(&ibr1, &node2);
- /*< call reserv(ibr1,node3) >*/
- reserv_(&ibr1, &node3);
- /*< call reserv(ibr1,node4) >*/
- reserv_(&ibr1, &node4);
- /*< call reserv(ibr1,ni1) >*/
- reserv_(&ibr1, &ni1);
- /*< call reserv(ibr1,ibr2) >*/
- reserv_(&ibr1, &ibr2);
- /*< call reserv(ibr2,node1) >*/
- reserv_(&ibr2, &node1);
- /*< call reserv(ibr2,node2) >*/
- reserv_(&ibr2, &node2);
- /*< call reserv(ibr2,node4) >*/
- reserv_(&ibr2, &node4);
- /*< call reserv(ibr2,ni2) >*/
- reserv_(&ibr2, &ni2);
- /*< call reserv(ibr2,ibr1) >*/
- reserv_(&ibr2, &ibr1);
- /*< call reserv(node3,ni2) >*/
- reserv_(&node3, &ni2);
- /*< call reserv(ni2,node3) >*/
- reserv_(&ni2, &node3);
- /*< numvs=numvs+1 >*/
- ++cirdat_1.numvs;
- /*< nodplc(iseq+numvs)=loc >*/
- nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
- /*< nodplc(iseq1+numvs)=1 >*/
- nodplc[tabinf_1.iseq1 + cirdat_1.numvs - 1] = 1;
- /*< nodplc(neqn+numvs)=ibr1 >*/
- nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = ibr1;
- /*< nodplc(nodevs+ni1)=nodplc(nodevs+ni1)+1 >*/
- ++nodplc[tabinf_1.nodevs + ni1 - 1];
- /*< nodplc(nodevs+node2)=nodplc(nodevs+node2)+1 >*/
- ++nodplc[tabinf_1.nodevs + node2 - 1];
- /*< numvs=numvs+1 >*/
- ++cirdat_1.numvs;
- /*< nodplc(iseq+numvs)=loc >*/
- nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
- /*< nodplc(iseq1+numvs)=2 >*/
- nodplc[tabinf_1.iseq1 + cirdat_1.numvs - 1] = 2;
- /*< nodplc(neqn+numvs)=ibr2 >*/
- nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = ibr2;
- /*< nodplc(nodevs+ni2)=nodplc(nodevs+ni2)+1 >*/
- ++nodplc[tabinf_1.nodevs + ni2 - 1];
- /*< nodplc(nodevs+node4)=nodplc(nodevs+node4)+1 >*/
- ++nodplc[tabinf_1.nodevs + node4 - 1];
- /*< nodplc(loc+30)=ntlin+1 >*/
- nodplc[loc + 29] = cirdat_1.ntlin + 1;
- /*< ntlin=ntlin+2 >*/
- cirdat_1.ntlin += 2;
- /*< loc=nodplc(loc) >*/
- loc = nodplc[loc - 1];
- /*< go to 610 >*/
- goto L610;
-
- /* finished */
-
- /*< 1000 return >*/
- L1000:
- return 0;
- /*< end >*/
- } /* matptr_ */
-
- #undef cvalue
- #undef nodplc
-
-
-